package com.mit.wx.service;

import com.mit.wx.dto.AdminDto;
import com.mit.wx.entity.Admin;

import java.util.List;

/**
 * 2018/10/20 Create by 郭文梁
 * AdminService
 * 管理员业务服务
 *
 * @author 郭文梁
 * @date 2018/10/20
 */
public interface AdminService extends BaseService<Admin> {
    /**
     * 登录操作
     *
     * @param name     用户名
     * @param password 密码
     * @return 管理员数据访问对象
     */
    AdminDto login(String name, String password);

    /**
     * 通过用户名查找管理员
     *
     * @param name 用户名
     * @return 管理员
     */
    AdminDto findByName(String name);

    /**
     * 创建管理员账户
     *
     * @param adminDto 账户描述
     * @return 结果
     */
    AdminDto create(AdminDto adminDto);

    /**
     * 通过OpenId查找
     *
     * @param openId OpenId
     * @return AdminDTO
     */
    AdminDto findByOpenId(String openId);

    /**
     * 兵丁管理员微信号
     *
     * @param adminId 管理员ID
     * @param openId  OpenId
     * @return 管理员账户
     */
    AdminDto bindOpenId(Integer adminId, String openId);

    /**
     * 通过Code绑定OpenId
     *
     * @param adminId 管理员ID
     * @param code    CODE
     * @return AdminDTO
     */
    AdminDto bindOpenIdByCode(Integer adminId, String code);

    /**
     * 获取绑定OpenId的二维码
     *
     * @param adminId 管理员账户
     * @return 二维码二进制内容
     */
    byte[] getBindOpenIdQrCode(Integer adminId);

    /**
     * 获取已绑定微信号的管理员
     *
     * @return 管理员列表
     */
    List<Admin> getBound();
}
